<?php 
// DATBAS TESTER
// 
// // ----------------------------------------------------------------------------------------------------------------------
		// - TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST -
		// ----------------------------------------------------------------------------------------------------------------------		

		/**
		* Funktion testar databaskopplingen och SELECT funktionen.
		* @param DBConfig $dbConfig Databas uppgifterna (host, user, password, database). 
		* @return bool
		*/
		public static function DatabaseTest(DBConfig $dbConfig)
		{
			$database = new Database($dbConfig);

			if ($database->OpenConnection($dbConfig) == false) {
				echo "Uppkopplingen mot databasen fungerade inte </br>";			
				return false;
			}
			$userName = "admin";
			$userPassword = "hej123";

			$query = "SELECT userID, userName, userPassword FROM user WHERE userName = ? LIMIT 1";
			
			if ($statement = $database->mysqli->prepare($query)) {
				echo "Prepare fungerar toppen! </br>";

				$statement->bind_param("s", $userName);
				$statement = $database->Select($statement);

				$statement->bind_result($database_userID, $database_userName, $database_userPassword);
				$statement->fetch();
				
				if ($statement->num_rows == 1) {
					echo "Houston we found a User! </br>";

				} else{
					echo "Du är för dålig för att kasta sten, Användare </br>";
				}				
			}
			
			if ($database->CloseConnection() == false) {
				echo "Det gick inte att stänga databaskoppligen! </br>";
				return false;
			}
			echo "Databas test fungerade! </br>";
			return true;
		}


		// LOGIN HANDLER
		// 
		// // ----------------------------------------------------------------------------------------------------------------------
		// - TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST -
		// ----------------------------------------------------------------------------------------------------------------------		
		public function LogTest()
		{
			
			// - TEST DEL 1--------------------------------------------------

			// Vi startar med att försätta oss i utloggat tillstånd genom att anropa funktionen USER LOGS OUT. Som i sin tur kontrollerar om det finns en session => tar bort sessionen.	
			$this -> UserLogsOut();
			
			// Vi kontrollerar om vi är inloggade.
			if ($this -> UserIsLoggedIn() == true) {
				echo "!FEL! i test av kontrollering om vi är i utloggat tillstånd. (DVS: vi är inloggade)";
				return false;	
			}			
			
			// Nu fortsätter vi med ett försöka till att logga in med FEL användar uppgifter. Kontrollera om funktionen för att logga in fungerar.(Här ska det INTE fungera att logga in.	
			if ($this -> UserLogsIn('wrongUsername', 'wrongPassword') == true) {
				echo "!FEL! vid inloggning med fel användar uppgifter.  (User Logs In)";
				return false;	
			}
			
			// Nu fortsätter vi med ett försöka till att logga in med RÄTT användar uppgifter. Kontrollera om funktionen för att logga in fungerar.(Här ska det fungera att logga in.
			if ($this -> UserLogsIn('admin', 'hej123') == false) {
				echo "!FEL! vid inloggning med rätt användar uppgifter.  (User Logs In)";
				return false;	
			}
			
			// Vi kontrollerar om vi är inloggade.
			if ($this -> UserIsLoggedIn() == false) {
				echo "!FEL! Vid inloggning. Vi är inte i ett inloggat tillstånd.";
				return false;	
			}
			
			// Kontrollera om vi kan logga ut med USER LOGS OUT.
			$this -> UserLogsOut();
			
			// Här ska vi försöka logga in med rätt användarnamn men med fel lösenord.
			if ($this -> UserLogsIn('admin', 'wrongPassword') == true) {
				echo "!FEL! vid inloggning med fel lösenord.  (User Logs In)";
				return false;	
			}
			return true; // retunerar true om den inte har gått in i någon av testerna och retunerar false så vi kan få ut vårt rätt meddelande i index.php		

 
//REGISTER HANDLER

	// ----------------------------------------------------------------------------------------------------------------------
		// - TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST -
		// ----------------------------------------------------------------------------------------------------------------------		
		public function RegTest()
		{
			$username = "jesper";
			$mail = "jesper.hedlund@hotmail.com";
			$password = "hej123";


			$numberOfUsersBeforeRegistration = count($this->GetUsersFromDatabase());
			

			// Test av validering av korrekt data.
			$validateResult = $this->DataValidator($username, $mail, $password, $password);
			if (empty($validateResult) == false) {
				echo "Test av validering av korrekt data misslyckades!";
				return false;
			}

			// Test för att kontrollera om användarnmnet är ledigt. 
			if ($this->OccupiedUsername($username)) {
				echo "Test av OccupiedUsername. Användarnamnet är upptaget, fastän det inte ska vara det.";
				return false;
			}
			
			// Test att registrera en ny användare.
			$userID = $this->RegisterUser($username, $mail, $password);
			$numberOfUsersAfterRegistration = count($this->GetUsersFromDatabase());
			if ($numberOfUsersAfterRegistration == $numberOfUsersBeforeRegistration) {
				echo "Det fungerade INTE att registrering en ny användare!";
				return false;
			}

			// Användarnamn.
			if ($this->OccupiedUsername($username) == false) {
				echo "Det andra testet av OccupiedUsername. Användarnamnet är ledigt, fastän det inte ska vara det.";
				return false;
			}

			// Testar att ta bort en användare.
			if($this->DeleteUser($userID) == false) {
				echo "Det gick inte att tabort en medlem";
				return false;
			}			
			return true;
		}
 ?>